<?php
/**
 * UseradminController
 * 
 * @author
 * @version 
 */
require_once 'Zend/Controller/Action.php';
class Admin_UserAdminController extends Thaind_Controller_Action
{
	var $_arrParam;
	public function init()
    {
//    	Truyền các tham số nhận được ra view
    	$this->_arrParam = $this->_request->getParams();
    	$this->view->arrParam = $this->_arrParam;
    	if (!isset($this->_arrParam['page']) || !$this->_arrParam['page']) {
    		$this->_arrParam['page'] = 1;
    	}
    	if (!isset($this->_arrParam['line_per_page']) || !$this->_arrParam['line_per_page']) {
    		$this->_arrParam['line_per_page'] = 10;
    	}
    }

    public function preDispatch(){
		$template_path = TEMPLATE_PATH . "/admin/default/";
		$this->loadTemplate($template_path,'template.ini','template');
    	$auth = Zend_Auth::getInstance();
    	$identity = $auth->getIdentity();
    	if (!$auth->hasIdentity()) {
    		$this->_forward('login','index','admin');//,$this->_arrParam);
    	}elseif ($identity->admin != 1){
    		$this->_redirect("/admin");
    	}
    }
    public function indexAction(){
		Zend_Loader::loadClass('Admin_Models_UserAdminModel');
		$model = new Admin_Models_UserAdminModel();
    	if($this->_request->isPost()){
			$username =  explode("@",$this->_arrParam["email"]);
			$data["username"] = $data["fullname"] = preg_replace("/[^A-Za-z0-9]/", '', $username[0]);
			$validator = new Zend_Validate_Db_NoRecordExists(
				array(
					'table'   => 'admin_user',
					'field'   => 'username'
				)
			);			
			if ($validator->isValid($data["username"])){
				$data['salt'] = $salt = substr(uniqid(FALSE), -5,5);
				$password = substr(uniqid(FALSE), -12,12);
				$data['password'] = md5(md5($password) . ' ' . md5($salt));
				$data['permission'] = implode("|",$this->_arrParam["permission"]);
				
				try{
					$model->insert($data);
					$mail = new Zend_Mail ('UTF-8');					
//					$mail->setFrom('dinhthaiptit@gmail.vn',"Storegame");		
					$html = "Tài khoản : " . $data["username"] . "<br />";
					$html .= "Mật khẩu : " . $password . "<br />";
					$mail->setBodyHtml($html);
					$mail->addTo($this->_arrParam['email']);					
					
					$mail->setSubject("Tài khoản admin storegame");
					$mail->send ();
					echo "<div class = 'alert alert-success text-center'>Tạo tài khoản thành công</div>";
				}catch(Exception $e){
				echo $e;
					echo "<div class = 'alert alert-danger text-center'>Có lỗi khi gửi mail</div>";
				}

			}else{
				echo "<div class = 'alert alert-danger text-center'>Tài khoản đã tồn tại</div>";
			}
			
		}
    }
    /**
     * The default action - show the home page
     */
    public function indexOldAction (){
    	
//    	Khai báo biến

    	$db = Zend_Db_Table::getDefaultAdapter();
    	$this->setPagination($db->select()->from('admin_user',array('id','username','name'	=> 'fullname')), $this->_arrParam);
		if($this->_request->isPost()){
			Zend_Debug::dump($this->_arrParam);
			//$str = preg_replace("/[^A-Za-z0-9]/", '', $str);
			die;
		}
    }

    public function addAction(){
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_UserAdminForm');
    	Zend_Loader::loadClass('Admin_Models_UserAdminModel');
    	
//    	Khai báo biến

    	$form = new Admin_Forms_UserAdminForm(array('submit'	=> 'Thêm','cancel_link'	=> '/admin/user-admin'));
    	$model = new Admin_Models_UserAdminModel();

//    	Nếu action là post thì thực hiện thêm nhà phát hành
        
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
    				$validator = new Zend_Validate_Db_NoRecordExists(
					    array(
					        'table'   => 'admin_user',
					        'field'   => 'username'
					    )
					);
					$data = $form->getValues();
					if ($validator->isValid($data['username'])){
						$data['salt'] = substr(uniqid(FALSE), -5,5);
						$data['password'] = md5(md5($data['password']) . ' ' . md5($data['salt']));
						$model->insert($data);
						$this->_redirect("/admin/user-admin");
					}else{
						echo "<div class = 'alert alert-danger text-center'>Tài khoản đã tồn tại</div>";
					}
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    }
    public function editAction(){
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_UserAdminForm');
    	Zend_Loader::loadClass('Admin_Models_UserAdminModel');
    	
//    	Khai báo biến

    	$form = new Admin_Forms_UserAdminForm(array('submit'	=> 'Sửa','cancel_link'	=> '/admin/user-admin'));
    	$model = new Admin_Models_UserAdminModel();
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	
//    	Nếu action là post thì thực hiện sửa nhà phát hành
        if (!$this->_arrParam['id']){
    		$this->_redirect('/admin/user-admin');
    	}
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
    				
//    				Update dữ liệu

    				$model->update($form->getValues(),$where);
    				$this->_redirect('/admin/user-admin');
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}else{
	    	$cp_info = $model->fetchRow($where);
	    	$form->setDefaults($cp_info->toArray());
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    	$this->render('add');
    }
    public function deleteAction(){
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Models_UserAdminModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_UserAdminModel();
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	
//		Tắt view

		$this->_helper->viewRenderer->setNoRender();
//    	Xóa record

		try {
    		$model->delete($where);
    		$this->_redirect('/admin/user-admin');
    	} catch (Exception $e) {
    		echo $e;
    	}
    }
    
}
